VideoView是Android原生提供的一個封裝類,只用來播放影片,影片來源可以是網路的也可以是本地的。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="0dp"
android:layout_height="250dp"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<VideoView
android:id="@+id/m_video_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
在xml根布局添加這個屬性可以保持螢幕常亮
android:keepScreenOn="true"
private void initVideoView() {
// --- [方法一] 本地片源 ---
// String videoPath = "android.resource://" + getPackageName() + "/" + R.raw.video;
// --- [方法二] 網路片源 ---
String videoPath = "http://videocdn.bodybuilding.com/video/mp4/62000/62792m.mp4";
view.mVideoView.setVideoPath(videoPath); //設置片源
view.mVideoView.setMediaController(new MediaController(this)); //設置控鍵
view.mVideoView.start(); //開始播放
}
注意!
API 28以後只允許HTTPS網路請求,如果要使用HTTP要另外進行設置。
步驟一
在xml中創建network_security_config.xml
文件
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
步驟二
在AndroidManifest.xml
添加這一行:
<manifest ...>
<application
android:networkSecurityConfig="@xml/network_security_config"
... >
</application>
</manifest>
AndroidManifest.xml
<activity
android:name=".MainActivity"
android:configChanges="orientation|screenSize"
... />
getResources().getConfiguration().orientation